/**
 * @file deepseek_api.h
 * @brief DeepSeek API 接口定义
 */
#pragma once
#include "http_client.h"
#include "cJSON.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "define_config.h"
#include <signal.h>
#include <stdbool.h>
#include <unistd.h>
#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief 流式响应回调类型
 * @param text_chunk 文本片段内容
 * @param chunk_len  片段长度（字节）
 */
typedef void (*DS_StreamCallback)(const char* text_chunk, size_t chunk_len);
 // 配置参数
 #define MAX_RETRIES 3               // 最大重试次数
 #define BASE_RETRY_DELAY 1          // 基础重试延迟（秒）
 #define ANIMATION_INTERVAL 200000   // 等待动画刷新间隔（微秒）
/**
 * @brief 发送标准对话请求（自动处理流式/非流式）
 * @param api_key   DeepSeek API密钥
 * @param prompt    用户输入内容
 * @param model     模型名称（如"deepseek-chat"）
 * @param callback  流式数据回调
 * @return 是否成功发起请求
 */
bool DS_SendStandardRequest(
    const char* api_key,
    const char* prompt,
    const char* model,
    DS_StreamCallback callback
);
typedef struct 
{
  char mode[20];
  char *DeepSeekMode_next;
}DeepSeekMode;
static volatile sig_atomic_t g_interrupted = false;
static struct timespec g_request_start_time;

static void build_conversation(char* buffer, size_t size) ;

#ifdef __cplusplus
}
#endif

/*
curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <DeepSeek API Key>" \
  -d '{
        "model": "deepseek-chat",
        "messages": [
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "Hello!"}
        ],
        "stream": false
      }'*/